#include "table2.h"

/**
 * 表插入排序
 * @param {table2} *tab          待排序表
 * @return {void}
 */
void tableinsertsort(table2 *tab)
{
    int i, p, q;
    tab->r[0].link = 1;
    tab->r[1].link = 0;

    for (i = 2; i <= tab->length; i++)
    {
        q = 0;
        p = tab->r[0].link;
        while (p != 0 && tab->r[p].key < tab->r[i].key)
        {
            q = p;
            p = tab->r[p].link;
        }
        tab -> r[i].link = p;
        tab -> r[q].link = i;
    }
}

int main() {
    table2 tab;
    int i;
    keytype a[] = {9, 8, 7, 6, 4,5 , 3, 2, 1};
    tab.length = sizeof(a) / sizeof(a[0]) - 1;
    for (i = 1; i <= tab.length; i++) {
        tab.r[i].key = a[i - 1];
    }
    tableinsertsort(&tab);
    for (i = 1; i <= tab.length; i++) {
        printf("%d ", tab.r[i].key);
    }
    return 0;
}